widget: Implement show_all
authorTimm Bäder <mail@baedert.org>
Fri, 18 Nov 2016 08:47:38 +0000 (09:47 +0100)
committerTimm Bäder <mail@baedert.org>
Sat, 7 Jan 2017 15:44:01 +0000 (16:44 +0100)
Do what gtk_container_forall did: show_all all children, then the widget
itself.

gtk/gtkcontainer.c
gtk/gtkwidget.c

index 4f23ece952b7a6ececf12059391a65a714be42ef..91a155a8d1a039cfb3573d385dc848ec8f590b6d 100644 (file)
@@ -322,7 +322,6 @@ static gboolean gtk_container_focus_move           (GtkContainer      *container
                                                     GtkDirectionType   direction);
 static void     gtk_container_children_callback    (GtkWidget         *widget,
                                                     gpointer           client_data);
-static void     gtk_container_show_all             (GtkWidget         *widget);
 static gint     gtk_container_draw                 (GtkWidget         *widget,
                                                     cairo_t           *cr);
 static void     gtk_container_snapshot             (GtkWidget         *widget,
@@ -463,7 +462,6 @@ gtk_container_class_init (GtkContainerClass *class)
 
   widget_class->destroy = gtk_container_destroy;
   widget_class->compute_expand = gtk_container_compute_expand;
-  widget_class->show_all = gtk_container_show_all;
   widget_class->snapshot = gtk_container_snapshot;
   widget_class->draw = gtk_container_draw;
   widget_class->map = gtk_container_map;
@@ -2991,18 +2989,6 @@ gtk_container_get_focus_hadjustment (GtkContainer *container)
   return hadjustment;
 }
 
-
-static void
-gtk_container_show_all (GtkWidget *widget)
-{
-  g_return_if_fail (GTK_IS_CONTAINER (widget));
-
-  gtk_container_foreach (GTK_CONTAINER (widget),
-                         (GtkCallback) gtk_widget_show_all,
-                         NULL);
-  gtk_widget_show (widget);
-}
-
 typedef struct {
   GtkWidget *child;
   int window_depth;
index 2f46a78daa550a37221ba35d581890227f4066d1..ea9380e5bcc8fa588cc04bd716e22bde1af120df 100644 (file)
@@ -944,6 +944,22 @@ gtk_widget_real_snapshot (GtkWidget   *widget,
   /* nothing to do here */
 }
 
+static void
+gtk_widget_real_show_all (GtkWidget *widget)
+{
+  GtkWidget *p;
+
+  for (p = gtk_widget_get_first_child (widget);
+       p != NULL;
+       p = gtk_widget_get_next_sibling (p))
+    {
+      if (!GTK_IS_POPOVER (p))
+        gtk_widget_show_all (p);
+    }
+
+  gtk_widget_show (widget);
+}
+
 static void
 gtk_widget_class_init (GtkWidgetClass *klass)
 {
@@ -992,7 +1008,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
   klass->activate_signal = 0;
   klass->dispatch_child_properties_changed = gtk_widget_dispatch_child_properties_changed;
   klass->show = gtk_widget_real_show;
-  klass->show_all = gtk_widget_show;
+  klass->show_all = gtk_widget_real_show_all;
   klass->hide = gtk_widget_real_hide;
   klass->map = gtk_widget_real_map;
   klass->unmap = gtk_widget_real_unmap;